/**
 * LimitProcessor 类 - 限制处理器
 * 保留前 limit 个元素
 */
public class LimitProcessor<T> implements DataProcessor<T> {

    private int limit;

    /**
     * 构造方法
     * 
     * @param limit 限制数量
     */
    public LimitProcessor(int limit) {
        this.limit = limit;
    }

    /**
     * 处理数据容器，保留前 limit 个元素
     * 
     * @param input 输入的数据容器
     * @return 限制后的新容器
     */
    @Override
    public DataContainer<T> process(DataContainer<T> input) {
        DataContainer<T> result = new DataContainer<>();

        // 保留前 limit 个元素（如果不足 limit 个，则保留全部）
        int actualLimit = Math.min(limit, input.size());
        for (int i = 0; i < actualLimit; i++) {
            result.add(input.get(i));
        }

        return result;
    }

    /**
     * 获取处理器名称
     * 必须包含学生姓名
     * 
     * @return 处理器名称
     */
    @Override
    public String getProcessorName() {
        return "李四的限制处理器"; // 请替换为实际姓名
    }
}
